При отображении настраиваемых элементов управления или содержимого окна Ваше приложение должно считывать и использовать системные настройки пользовательского интерфейса. Стандартные элементы управления, поставляемые USER32.DLL и COMCTL32.DLL, автоматически поддерживают все необходимые настройки. Приложения могут добавлять поддержку этих настроек в свои окна, вызвав DefWindowProc в процедуре окна. Приложения должны аккуратно обращаться с этими настройками:
При создании нестандартных элементов управления
При создании элементов управления, отображаемых владельцами
При использовании родительских и дочерних классов для изменения обычного режима работы стандартного элемента управления
При обработке сообщения без вызова DefWindowProc (особенно при отображении любых областей, не являющихся клиентскими)
При обработке ввода на низком уровне, который игнорирует обычные сообщения клавиатуры и мыши (например, двойной щелчок и нажатие клавиши Shift)
Эти настройки устанавливаются с помощью функций GetSysColor, GetSystemMetrics и SystemParametersInfo. Для получения дополнительной информации обратитесь к Microsoft Platform SDK или
http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_8fjn.htm http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_4p67.htm
Все приложения должны поддерживать:
SPI_GETHIGHCONTRAST | Все настройки GetSysColor являются обязательными для меню, диалоговых окон и других стандартных элементов пользовательского интерфейса. См. ниже раздел 2. |
SPI_GETWORKAREA | Размер рабочей области основного экрана |
Нестандартные поля для выделения или редактирования текста должны поддерживать:
SPI_GETCARETWIDTH | Ширина курсора в поле редактирования |
Нестандартные выпадающие списки должны поддерживать:
SPI_GETCOMBOBOXANIMATION | Если значением данной настройки является FALSE, эффект соскальзывания для выпадающих списков должен быть отключен |
Нестандартные обработчики клавиатуры (низкоуровневый ввод) должны поддерживать:
SPI_GETKEYBOARDDELAY SPI_GETKEYBOARDSPEED | Настройка задержки перед началом повтора символов Настройка скорости повтора символов |
SPI_GETFILTERKEYS | Расширенный интервал для указанных выше настроек |
Нестандартные меню должны поддерживать:
SM_CYMENUCHECK, CXMENUCHECK | Установленные по умолчанию размеры флажка меню |
SM_CYMENU | Высота строки меню |
SPI_GETNONCLIENTMETRICS IfMenuHeight lfMenuFont lfMessageFont | Высота меню Шрифт меню Шрифт окна сообщения |
SPI_GETSELECTIONFADE | Если значением данной настройки является FALSE, то функция исчезновения элементов меню должна быть отключена |
SPI_GETMENUANIMATION | Если значением данной настройки является FALSE, то эффекты анимации меню должны быть отключены |
SPI_GETMENUFADE | Если значением данной настройки является FALSE, то эффекты анимации исчезновения меню должны быть отключена |
Указанные функции мыши должны поддерживать:
SM_CYDOUBLECLK, SM_CXDOUBLECLK | Максимально допустимое вертикальное и горизонтальное расстояние, на которое мышь может сдвинуться между последовательными щелчками, интерпретируемыми как двойной щелчок. |
SM_CYDRAG, SM_CXDRAG | Минимальное вертикальное и горизонтальное расстояние, на которое должна сдвинуться мышь при нажатой кнопке, для начала операции буксировки |
SPI_GETMOUSEHOVERHEIGHT SPI_GETMOUSEHOVERWIDTH | Высота и ширина прямоугольника, внутри которого должен находиться указатель мыши для активизации эффекта ожидания ввода |
SPI_GETMOUSEHOVERTIME | Время ожидания ввода |
Нестандартные полосы прокрутки должны поддерживать:
SM_CYHSCROLL SM_CXVSCROLL | Высота горизонтальной полосы прокрутки Ширина вертикальной полосы прокрутки |
Звуковые функции приложения должны поддерживать:
SPI_GETSHOWSOUNDS | Если значением является TRUE, то приложение должно представлять всю информацию визуально, а не только посредством звуковых эффектов |
Нестандартные подсказки должны поддерживать:
SPI_GETNONCLIENTMETRICS SPI_lfStatusFont | Шрифт, используемый в строках состояния или подсказках |
SPI_GETTOOLTIPANIMATION | Если значением является FALSE, то анимация подсказок должна быть отключена |
Нестандартные кадры окон должны поддерживать:
SM_CYSMCAPTION | Высота заголовка |
SPI_GETNONCLIENTMETRICS IfCaptionFont | Информация о шрифте заголовка |
SM_CYBORDER, SM_CXBORDER | Минимальная толщина линии в пикселах. Приложения не должны рисовать линии тоньше, чем указано, потому что на мониторах с высоким разрешением линия толщиной в 1 пиксел будет практически не видна. (Это значение устанавливается драйвером экрана и увеличивается пользователем, когда он выбирает Специальный размер системного шрифта на Панели управления). |
SM_CXEDGE SM_CYEDGE | Толщина трехмерной границы в пикселах. Каждая трехмерная граница состоит из двух смежных линий, таким образом ее толщина равна 2 * SM_CxBORDER. |
SM_CXSIZEFRAME SM_CYSIZEFRAME | Толщина рамки окна, размер которого можно изменять, в пикселах. |
SM_CYFIXEDFRAME SM_CXFIXEDFRAME | Толщина рамки окна, размер которого нельзя изменять, в пикселах. Она состоит из одной трехмерной границы, толщина которой равна SM_CxEDGE плюс одна пустая линия, толщина которой равна SM_CxBORDER. |